package com.qire.manhua.dal.service;

import android.net.Uri;

import com.qire.antsbinder.dal.Observer;
import com.qire.common.dal.WarehouseFactory;
import com.qire.manhua.dal.IAppConfigDAL;

import java.io.File;
import java.net.URI;
import java.util.ArrayList;

public class UploadFileService {

    private final IAppConfigDAL appConfigDAL;
    private final String uploadUrl;

    public UploadFileService(String uploadUrl, Observer observer) {
        this.uploadUrl = uploadUrl;
        appConfigDAL = WarehouseFactory.create(observer, IAppConfigDAL.class);
    }

    public void uploadImage(ArrayList<String> uploadPathList) {
        int size = uploadPathList.size();
        File[] files = new File[size];
        for(int index = 0; index < size; index++) {
            // android 的Uri 标准 与 Java 的URI 标准存在差异，new File 使用URI 需要转换
            // path 路径从系统数据库中获取为了方便web使用会存在 file:/// 协议头，所以此处需要转换，可以使用一下两种方方式转换
            // 1. new File(path.replace("file:///","")) 直接删除协议头，这样做并不严谨
            // 2. new File(URI.create(Uri.parse(path).toString())) 使用Uri转换一次协议地址为本地地址，推荐这样
            String path = uploadPathList.get(index);
            if(path.contains(" ")) {
                // 存在某些不规范路径 比如文件名中带有空格的情况，处理一个兼容方案，这种问题只能慢慢积累
                files[index] = new File(path.replace("file:///",""));
            } else {
                // 默认还是使用这种方式来打开
                URI uri = URI.create(Uri.parse(path).toString());
                files[index] = new File(uri);
            }
        }
        appConfigDAL.uploadImage(uploadUrl, files);
    }
}
